/** 
 * 自定义文件上传/下载
 * */
 var selector = ''; //CSS的ID选择器
 var uploadUrl = ''; //上传的临时地址
 var modifyUrl = ''; //更新的地址
 var cacheKey = ''; //需要更新的缓存键名
 var localTmpPrefix = '_downloads/'; //安卓用户本地文件临时地址前缀
 var localPrefix = '/storage/emulated/0/Android/data/io.dcloud.HBuilder/downloads/'; //安卓用户本地文件地址前缀
 
 
 
 
 
 /** 
  * 用户头像上传更新
  * 选择图片
  * @param cssId ID选择器名称
  * @param tmpUrl 上传接口地址
  * @param modifyUrl 更新接口地址
  * uHead = 'uhead';
  * uHeadUpload = domain+'/app/user/head/tmp';
  * uHeadModify = domain+'/app/user/head/modify';
  * */
 function choosePhoto(configs) {
	// 更新上传配置
	selector = configs.selector;
	uploadUrl = configs.uploadUrl;
	modifyUrl = configs.modifyUrl;
	cacheKey = configs.cacheKey;
	cacheField = configs.cacheField;
	// 下面选择
	// mui.plusReady(function () {
	plus.nativeUI.actionSheet(
		{
			// title: '修改头像',
			cancel: '取消',
			buttons: [
				{ title: '拍照' }, 
				{ title: '从手机相册选择' },
			],
		}, function(e) {
			switch (e.index) {
				case 0:
					break;
				case 1: //拍照 
					appendByCamera();
					break;
				case 2: //打开相册  
					appendByGallery();
					break;
				default:
					break;
			}
		}, 
	false);
	// });
 }
 // 拍照添加文件
 function appendByCamera(){
 	plus.camera.getCamera().captureImage(function(e){
 		plus.io.resolveLocalFileSystemURL(e, function(entry) { 
			var path = entry.toLocalURL(); 
			document.getElementById(selector).src = path; 
			setUploadFileTmp();
 		}, function(e) { 
 			mui.toast("读取拍照文件错误："+e.message); 
 		}); 
 	});    
 }
 // 从相册添加文件
 function appendByGallery(){
 	plus.gallery.pick(function(path){
 		// 更新头像地址
 		// mui("#pathUrl")[0].innerHTML = path; 
 		document.getElementById(selector).src = path;
 		setUploadFileTmp();
 	});
 }
 // 上传文件
 function setUploadFileTmp(){
 	// // 系统参数
 	// var sys = getSys();
 	// var domain = sys.domain + '/app/user/head/tmp';
	var domain = uploadUrl;
	// mui.alert(domain);  return
 	// 域名+参数
 	var method = {
 		method:"POST", 
 		blocksize:204800, 
 		priority:100
 	};
 	var file = document.getElementById(selector).src;
 	// 生成时间戳+随机值
 	var randString = '0';
 	for (var i=0;i<4;i++) {
 	    randString += Math.floor(Math.random()*10);
 	}
 	var stamp = Date.parse(new Date())+randString
 	// mui.toast(uid); return
 	var task = plus.uploader.createUpload(
 		domain, method,
 		function(t,status){ //上传完成
 			if(status==200){
 				// mui.alert("上传成功："+t.responseText);
 				// mui.toast("上传成功："+t.responseText);
 				var resData = JSON.parse(t.responseText);
 				resData = resData.data;
 				var filePath = resData.filePath;
 				// mui.alert("上传成功："+filePath); return
 				// document.getElementById('uHead').src = filePath;
 				// 更新用户缓存
 				setUserInfoHead(filePath);
 				// // 更新服务器头像信息
 				// setUploadFileUpdate(stamp);
				// 下载新上传的图片
				setFileDownLoad(stamp, filePath);
 			}else{
 				// mui.alert("上传失败："+status);
 				mui.toast("上传失败："+status);
 			}
 		}
 	);
 	//添加其他参数
 	task.addData("stamp",stamp);
 	task.addFile(file,{ key:"file" });
 	task.start();
 }  
 // 下载新上传的图片
 function setFileDownLoad(stamp, link){
	mui.plusReady(function () {
		plus.nativeUI.toast("正在准备更新，请稍后！");
		var dtask = plus.downloader.createDownload(
			link, {}, function (d, status) {
			if (status == 200) {
				mui.toast('更新成功！');
				// 用户本地文件地址
				var f = d.filename; //本地相对地址
				var fs = f.split("/");
				var path = fs[fs.length-1]; //本地文件名
				path = localPrefix+path; //本地地址
 				// 更新用户缓存
 				setUserInfoHead(path);
 				// 更新服务器头像信息
 				setUploadFileUpdate(stamp, path);
			} else {
				plus.nativeUI.alert('更新失败:' + status);
			}
		});
		dtask.start();
		// 下载安装进度显示
		dtask.addEventListener("statechanged",
			function(task, status) {
			switch(task.state) {
				case 1: // 开始
					mui.toast('开始！',{ 
						duration:'short', type:'div',
					});
					break;
				case 2: //已连接到服务器
					mui.toast('已连接到服务器！',{ 
						duration:'short', type:'div',
					});
					break;
				case 3: // 已接收到数据
					var dsize = task.downloadedSize;
					var tsize = task.totalSize;
					var per = dsize / tsize *100;
					per = parseInt(per);
					mui.toast('更新进度：'+per+'%',{ 
						duration:'short', type:'div',
					});
					break;
				case 4: // 下载完成 
					mui.toast('更新完成',{ 
						duration:'short', type:'div',
					});
					break;
			}
		});
	});
 }
 // 更新文件信息
 function setUploadFileUpdate(stamp, path){
 	// // 系统参数
 	// var sys = getSys();
 	// var domain = sys.domain + '/app/user/head/modify';
	var domain = modifyUrl;
 	// 用户信息
 	var userInfo = cacheGet(userInfoKey);
 	var userId = userInfo ? userInfo.uid : 0;
 	// mui.toast(stamp); return
 	mui.ajax(domain,{
 		data:{
 			// appAccess: sys.appAccess,
 			uid:userId,
 			stamp:stamp,
			path:path
 		},
 		dataType:'json', //服务器返回json格式数据
 		type:'post', //HTTP请求类型
 		timeout:10000, //超时时间设置为10秒
 		headers:{
			'Content-Type':'application/x-www-form-urlencoded',
		}, 
 		success:function(res){
 			// mui.alert('res：'+res.data.url); return 
 			if (res.code!=0) {
 				mui.toast('更新失败');
 				return
 			}
 			mui.toast('更新成功');
 		},
 		error:function(xhr,type,errorThrown){
 			mui.toast('网络错误！',{ 
 				duration:'short', type:'div',
 			});
 		}
 	});
 }
 // 更新用户缓存
 function setUserInfoHead(headPath){
	if (cacheKey=='userInfo') { //用户信息
		var userInfo = cacheGet(userInfoKey);
		if (cacheField=='appHead') {
			userInfo.appHead = headPath;
		} else {
			userInfo.appHeadBg = headPath;
		}
		cacheSet(userInfoKey, userInfo);
	} 
 }